Il passaggio da array di stile C a std::array rappresenta un cambiamento fondamentale verso sicurezza dei tipi e programmazione generica nel C++ moderno.
1. Il Problema della Decadenza del Puntatore
Array legacy (int arr[N]) soffrono di "decadenza del puntatore". Quando vengono passati a funzioni, perdono i metadati relativi alla dimensione e si trasformano in un puntatore grezzo (int*). Ciò porta a operazioni con puntatori non sicure e overflow del buffer.
2. La Modernizzazione di C++11
std::array fornisce un wrapper sottile, wrapper senza overhead attorno agli array grezzi. Si integra con la STL (Libreria Standard di Modelli) rispettando il Regola dei Cinque.
3. Forwarding Perfetto con std::forward
C++11 ha introdotto std::forward per garantire std::array gli oggetti si muovano attraverso i wrapper template senza copie ridondanti. Sfruttando Regole di Collasso dei Riferimenti, preserviamo la categoria del valore dell'oggetto (lvalue vs rvalue).
$$T\&\& + \& \rightarrow T\&$$